package org.example;

import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.*;
import org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.FixedWidth;

import java.util.stream.Stream;

import static org.junit.jupiter.api.Assertions.assertEquals;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JunitTest {
    @ParameterizedTest
    @ValueSource(ints = {1})
    public void testAddition(int num){
        Assertions.assertEquals(5, num); // 验证 2 + 3 是否等于 5
    }

    @Order(1)
    @Test
    void Test01(){
        System.out.println("这是JunitTest里面的Test01");
    }
    @Order(3)
    @Test
    void Test02(){
        System.out.println("这是JunitTest里面的Test02");
    }
    @Disabled
    void Test03(){
        System.out.println("这是JunitTest里面的Test03");
    }
//    @BeforeAll
//    static void BeforeAllTest(){
//        System.out.println("这是JunitTest里面的BeforeAllTest");
//    }
//    @AfterAll
//    static void AfterAllTest(){
//        System.out.println("这是JunitTest里面的AfterAllTest");
//    }
    //@Disabled
//    @BeforeEach
//    void BeforeEachTest(){
//        System.out.println("这是BeforeEach里的语句");
//    }

    //参数
    @Order(2)
    @ParameterizedTest
    @ValueSource(ints = {1, 2, 3})
    void Test04(int num){
        System.out.println("Test04 num = " + num);
    }

//    @ParameterizedTest
//    @ValueSource(strings = {"1", "2", "3"})
//    void Test05(String str){
//        System.out.println("Test05 string = " + str);
//    }
//
//    @ParameterizedTest
//    @CsvSource({"张三, 20, 男",
//                "李四, 24, 男",
//                "田六, 18, 女"})
//    void Test08(String name, int age, String gender){
//        System.out.println("姓名: " + name + " 年龄: " + age + " 性别: " + gender);
//    }
//    @ParameterizedTest
//    @CsvFileSource(resources = "test01.csv")
//    void Test06(String name) {
//        System.out.println(name);
//    }
//
//    public static Stream<Arguments> Generator() {
//        return Stream.of(Arguments.arguments(1, "张三"),
//                Arguments.arguments(2, "李四"),
//                Arguments.arguments(3, "王五")
//        );
//    }
//    @ParameterizedTest
//    @MethodSource("Generator")
//    void Test07(int num, String name){
//        System.out.println(num + ":" + name);
//    }
}
